Existing software systems are usually spread across a discrete set of files involving intricate dependencies. A change made to a software system, also known as a commit, tends to miss out a partial subset of files, containing such intricate dependencies. Such a commit that misses out the partial subset of files is usually referred to as a partial commit. Present technologies provide a myriad of techniques for determining the partial commit.
Impact analysis tools conduct static analysis of a software system, to determine the various parts of the software system that maybe affected when a commit is made to the software system. A mapping between requirement, design elements and connections between logical code segments is provided for tracking all structural dependencies. Further, source code of the system is analyzed for determining structural dependencies. However, dependency information present within configuration files or machine-readable files of software components may be limited, as static information within configuration files may not provide information of dynamic, run-time dependencies.
Thus, certain dynamic analysis tools are available for evaluating a software system's behavior based on real time data. However, dynamic analysis tools are usually customized to a particular programming language and hence fail to operate on software systems built on a variety of languages. As a result, a change incorporated into a particular functionality of the software would interfere with various parts of the software system under consideration. A possibility of missing out a set of files unmodified always exists, thereby resulting in more effort during a testing phase of the software system. Hence the existing systems and methods are inefficient in calculating implicit dependencies in software systems.
Hence there is a need for an alternative method and a system that can mine a history of the software system for uncovering all implicit file dependencies for a change made to the software system. The alternative method must customize itself to the software system's architectural implementation and language. Thus a method for detecting a partial commit is proposed.
The present invention is directed to overcoming these and other deficiencies in the art.